new Vue({
    el: '#app',
    mixins: [Save],//组件配置文件，路径/utils/components.js
    data() {
        return {
            dataForm: {
                Sales_Unit_Price_SerialNumber: '', // 销售价格单流水号（主键）
                Start_Date: '', // 开始日期
                End_Date: '', // 结束日期
                Enterprise_Info_SerialNumber: '', // 企业编号
                Creater_SerialNumber: '', // 创建人
                Create_Datetime: '', // 创建时间
                Row_Status: '0', // 行状态：0:正常 1:删除
                Operation_ID: '', // 操作人
                Operation_Datetime: '', // 操作时间
            },
            childDataForm: [{}], // 子表1：价格明细 sales_unitprice_detail
            storeScopeDataForm: [{}], // 子表2：适用店铺 sales_unitprice_storescope
            enterpriseList: [], // 企业列表，用于下拉选择
            articleList: [], // 商品列表
            specificationsList: [], // 规格列表
            storeList: [], // 店铺列表，用于下拉选择
            type: '0',
        }
    },
    mounted() {
        /**
         * 组件配置文件中自动执行方法
         * 1.this.init(); //初始化文件
         * 2.this.getData(); //仅修改时执行，根据BOM配置属性查询
         */
        let ls_URL = window.location.href;
        this.type = getQueryObject(ls_URL, "type") || '0';

        this.getEnterpriseList();
        this.getArticleList();
        this.getSpecificationsList();
        this.getStoreList();
    },
    // 在数据加载完成后执行（修改模式下）
    documentLoadFinished() {
        // 如果是添加模式，生成流水号
        if (this.action === 'Add') {
            this.generateSerialNumber();
        }
    },
    methods: {
        // 获取企业列表（从enterprise_info表查询）
        getEnterpriseList() {
            generalApi.generalQueryByTableName({
                Data: 'enterprise_info',
                Condition: `Row_Status='0'`
            }).then(data => {
                if (data && Array.isArray(data) && data.length > 0) {
                    this.enterpriseList = data.map(item => ({
                        Enterprise_Info_SerialNumber: item.Enterprise_Info_SerialNumber,
                        Enterprise_Name: item.Enterprise_Name
                    }));
                } else {
                    this.enterpriseList = [];
                }
            }).catch(xhr => {
                this.$message.error("获取企业列表失败，请联系开发者!")
            })
        },
        // 获取商品列表
        getArticleList() {
            generalApi.generalQueryByTableName({
                Data: 'article_info',
                Condition: `Row_Status='0' AND Enterprise_Info_SerialNumber='${getCookie('enterprise')}'`
            }).then(data => {
                this.articleList = data || [];
            }).catch(xhr => {
                this.$message.error("获取商品列表失败，请联系开发者!")
            })
        },
        // 获取规格列表
        getSpecificationsList() {
            generalApi.generalQueryByTableName({
                Data: 'article_specifications',
                Condition: `Row_Status='0'`
            }).then(data => {
                this.specificationsList = data || [];
            }).catch(xhr => {
                this.$message.error("获取规格列表失败，请联系开发者!")
            })
        },
        // 根据商品编号获取对应的规格列表
        getSpecificationsByArticle(articleSerialNumber) {
            if (!articleSerialNumber) {
                return [];
            }
            return this.specificationsList.filter(item => item.Article_SerialNumber === articleSerialNumber);
        },
        // 处理商品选择变化（已改为手动录入，不再自动清空）
        handleArticleChange(item, index) {
            // 规格编号和销售单价已改为手动录入，不再自动清空
            // 用户可以根据需要手动输入规格编号和销售单价
        },
        // 处理规格选择变化（支持选择或手动输入）
        handleSpecificationChange(item, index) {
            // 规格编号支持从下拉列表选择或手动输入
            // 不再自动清空销售单价，用户可以根据需要手动输入
        },
        // 获取店铺列表（从store_info表查询）
        getStoreList() {
            generalApi.generalQueryByTableName({
                Data: 'store_info',
                Condition: `Row_Status='0' AND Enterprise_Info_SerialNumber='${getCookie('enterprise')}'`
            }).then(data => {
                this.storeList = data || [];
            }).catch(xhr => {
                this.$message.error("获取店铺列表失败，请联系开发者!")
            })
        },
        // 生成流水号（Sales_Unit_Price_SerialNumber）
        generateSerialNumber() {
            const timestamp = Date.now();
            const random = Math.floor(Math.random() * 1000).toString().padStart(3, '0');
            this.dataForm.Sales_Unit_Price_SerialNumber = `SUP${timestamp}${random}`;
        },
        // 重写提交方法，在提交前设置必要的字段
        async handleSubmit() {
            // 设置操作时间和操作者
            const now = new Date();
            this.dataForm.Operation_Datetime = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}:${String(now.getSeconds()).padStart(2, '0')}`;
            this.dataForm.Operation_ID = getCookie('user') || '';
            
            // 如果是添加模式，设置创建人和创建时间
            if (this.action === 'Add') {
                this.dataForm.Creater_SerialNumber = getCookie('user') || '';
                this.dataForm.Create_Datetime = this.dataForm.Operation_Datetime;
                // 如果没有生成流水号，则生成一个
                if (!this.dataForm.Sales_Unit_Price_SerialNumber) {
                    this.generateSerialNumber();
                }
            }
            
            // 设置行状态
            if (!this.dataForm.Row_Status) {
                this.dataForm.Row_Status = '0';
            }
            
            // 如果结束日期为空，自动设置为""空
            if (!this.dataForm.End_Date || this.dataForm.End_Date === '' || this.dataForm.End_Date === null || this.dataForm.End_Date === undefined) {
                this.dataForm.End_Date = '';
            }
            
            // 处理子表1：价格明细
            const validChildData = this.childDataForm.filter(item => !item.Row_Status || item.Row_Status != '1');
            
            // 验证是否有价格明细数据
            if (validChildData.length === 0) {
                this.$message.warning('请至少添加一条价格明细信息！');
                return;
            }
            
            validChildData.forEach((item, index) => {
                // 生成子表流水号（如果还没有）
                if (!item.Sales_Unit_Price_Detail_SerialNumber) {
                    const timestamp = Date.now();
                    const random = Math.floor(Math.random() * 1000).toString().padStart(3, '0');
                    item.Sales_Unit_Price_Detail_SerialNumber = `SUPD${timestamp}${random}${index}`;
                }
                // 设置主表流水号关联
                if (this.action === 'Add') {
                    item.Sales_Unit_Price_SerialNumber = this.dataForm.Sales_Unit_Price_SerialNumber;
                } else if (this.action === 'Modify') {
                    item.Sales_Unit_Price_SerialNumber = this.dataForm.Sales_Unit_Price_SerialNumber || this.nodeKey;
                }
                // 设置企业编号
                item.Enterprise_Info_SerialNumber = this.dataForm.Enterprise_Info_SerialNumber;
                // 设置操作时间和操作者
                item.Operation_Datetime = this.dataForm.Operation_Datetime;
                item.Operation_ID = this.dataForm.Operation_ID;
                // 设置创建人和创建时间（如果是新增）
                if (this.action === 'Add') {
                    item.Creater_SerialNumber = this.dataForm.Creater_SerialNumber;
                    item.Create_Datetime = this.dataForm.Create_Datetime;
                }
                // 设置行状态
                if (!item.Row_Status) {
                    item.Row_Status = '0';
                }
            });
            
            // 处理子表2：适用店铺
            const validStoreScopeData = this.storeScopeDataForm.filter(item => !item.Row_Status || item.Row_Status != '1');
            
            // 验证是否有适用店铺数据
            if (validStoreScopeData.length === 0) {
                this.$message.warning('请至少添加一个适用店铺！');
                return;
            }
            
            validStoreScopeData.forEach((item, index) => {
                // 生成子表流水号（如果还没有）
                if (!item.Sales_Unit_Price_StoreScope_SerialNumber) {
                    const timestamp = Date.now();
                    const random = Math.floor(Math.random() * 1000).toString().padStart(3, '0');
                    item.Sales_Unit_Price_StoreScope_SerialNumber = `SUPS${timestamp}${random}${index}`;
                }
                // 设置主表流水号关联（注意：这里关联的是主表，不是明细表）
                if (this.action === 'Add') {
                    item.Sales_Unit_Price_SerialNumber = this.dataForm.Sales_Unit_Price_SerialNumber;
                } else if (this.action === 'Modify') {
                    item.Sales_Unit_Price_SerialNumber = this.dataForm.Sales_Unit_Price_SerialNumber || this.nodeKey;
                }
                // 设置企业编号
                item.Enterprise_Info_SerialNumber = this.dataForm.Enterprise_Info_SerialNumber;
                // 设置操作时间和操作者
                item.Operation_Datetime = this.dataForm.Operation_Datetime;
                item.Operation_ID = this.dataForm.Operation_ID;
                // 设置创建人和创建时间（如果是新增）
                if (this.action === 'Add') {
                    item.Creater_SerialNumber = this.dataForm.Creater_SerialNumber;
                    item.Create_Datetime = this.dataForm.Create_Datetime;
                }
                // 设置行状态
                if (!item.Row_Status) {
                    item.Row_Status = '0';
                }
            });
            
            // 调用父类的提交方法
            const allValid = await this.validateAllForms();
            if (allValid) {
                this.loading = true;
                try {
                    const lJSONObject_DataSet = this.generateStructure();
                    const res = await generalApi.generalSaveByRequestBody({
                        Data: lJSONObject_DataSet
                    })
                    if (res.Status == "success") {
                        this.$message.success("提交成功");
                        window.location.href = './index.html';
                    } else {
                        this.$message.error("提交失败，请重试！");
                    }
                    this.loading = false;
                } catch (error) {
                    console.error(error);
                    this.$message.error("系统错误，请联系开发者!")
                    this.loading = false;
                }
            } else {
                this.$message({
                    message: '存在未填写的必填项！',
                    type: 'warning'
                });
            }
        }
    }
})
